Various types of network-based storage systems exist today, including network attached storage (NAS), storage area networks (SANs), and others. Network storage systems are commonly used for a variety of purposes, such as providing multiple users with access to shared data, backing up critical data (e.g., by data mirroring), and the like.
A network-based storage system typically includes at least one storage server, which is a processing system configured to store and retrieve data on behalf of one or more client processing systems (“clients”). A storage server operates on behalf of one or more clients to store and manage shared files. The files may be stored in a storage subsystem that includes one or more arrays of mass storage devices, such as magnetic or optical disks or tapes, by using RAID (Redundant Array of Inexpensive Disks). Hence, the mass storage devices in each array may be organized into one or more separate RAID groups. A storage server provides clients with file-level access. Some storage servers may additionally provide block-level access.
Current storage systems are generally packaged in either of two main forms: 1) an all-in-one custom-designed system that is essentially a standard computer with built-in disk drives, all in a single chassis (“enclosure”), or 2) a modular system in which one or more sets of disk drives, each in a separate chassis, are connected to a disk drive controller, and the sets of disk drives and controller are coupled to a storage server. Each disk shelf includes a set of disks that is coupled to an I/O module (shelf controller) which controls the set of disks.
A client sends an I/O request to a storage server to access data stored on the disks coupled to an I/O module in the storage subsystem. The storage subsystem receives and processes the I/O request from the storage server. The storage server also can send new firmware for an I/O module to the storage subsystem. There is not, however, a mechanism for a storage subsystem to upgrade the firmware for an I/O module to the new firmware without disrupting the processing of I/O requests by the I/O module.